home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-08-18 | 60.1 KB | 2,109 lines |
-
-
- stormamiga.lib Version 41.035 ( 17.08.1996 )
-
- © Kopierrecht 1996 bei COMPIUTECK
-
- geschrieben von Matthias Henze
-
-
- F R E E W A R E
-
-
-
-
- Einleitung Informationen über die stormamiga.lib.
-
- Registrierung Weshalb man sich registriert.
-
- Systemanforderungen Was braucht man für die stormamiga.lib?
-
- Installation Wie installiere ich die stormamiga.lib?
-
- Funktionen Beschreibung der einzelnen Funktionen.
-
- Beispiele Beschreibung der Beispielprogramme.
-
- Bekannte Fehler Wo gibt es Probleme?
-
- Updates Wo gibt es neue Versionen?
-
- Kopierrecht Das Rechtliche.
-
- Geschichte Was hat sich bisher getan?
-
- In Zukunft Was wird sich noch ändern?
-
- Danksagungen Danksagungen an ... .
-
- Autor Wie erreicht man den Autor?
-
- ============================================================================
-
- Einleitung:
- ~~~~~~~~~~~
-
- Da die Funktionen der "storm.lib" in C geschrieben sind,
- werden die damit gelinkten Programme sehr groß und langsam.
- Die Funtionen der "amiga.lib" sind auch nicht gerade klein
- und schnell.
- Aus diesem Grund habe ich mich am 18.03.1996 entschlossen
- die "stormamiga.lib" zu schreiben.
-
- Die "stormamiga.lib" ist komplett in Assembler geschrieben.
- Dadurch werden die damit gelinkten Programme auch sehr klein
- und schnell.
- Mein Ziel ist es, alle Funtionen der "amiga.lib", die nicht
- in den Pragmadateien enthalten sind, und alle Funktionen der
- "storm.lib" durch kurze und schnelle Assemblerroutinen zu
- ersetzen. Außerdem will ich einige Spezialbefehle von anderen
- Compilern (zur Zeit nur vom GCC) und einige Routinen, die das
- Programmieren erleichtern, in die "stormamiga.lib" integrieren.
-
-
- Wichtig
-
- In der jetzigen Version der "stormamiga.lib" sind noch nicht
- alle Funktionen der "storm.lib" und der "amiga.lib" enthalten.
- Außerdem wird zur Zeit nur das große Code- und Datenmodell
- unterstützt.
- Bis auf den Startupcode "stormamiga_startups.o" sollte die
- "stormamiga.lib" auch mit C++ funktionieren. Allerdings wurde
- das noch nicht genügend getestet.
-
- ============================================================================
-
- Registrierung:
- ~~~~~~~~~~~~~~
-
- Obwohl die "stormamiga.lib" Freeware ist, was auch so bleiben
- wird, können Sie sich bei mir registrieren lassen. Ich möchte
- vor allem wissen, ob sich die Weiterentwicklung überhaupt lohnt.
-
- Sie können mir natürlich auch Geschenke, die Sie für angemessen
- halten, zuschicken. Es währe auch sehr schön, wenn Sie mir Ihr
- Programm, bei dem Sie die "stormamiga.lib" verwendet haben,
- zuschicken würden. Außerdem würde ich gerne Ihre Meinung zur
- "stormamiga.lib" erfahren.
-
- Für Fehlerberichte (möglichst mit dem entsprechenden Quelltext
- und einer genauen Beschreibung) und Verbesserungsvorschläge bin
- ich jederzeit dankbar.
- Wenn Sie Fragen zur "stormamiga.lib" haben, können Sie mich gerne
- anrufen oder mir schreiben. Ich werde die Antworten zu Ihren
- Fragen in der Anleitung der nächsten Version veröffentlichen.
- Wenn ich Ihnen die Antworten zu Ihren Fragen persönlich zuschicken
- soll, dann müssen Sie mir natürlich einen frankierten Briefumschlag
- mitschicken. Wenn ich Ihnen die neueste Version der "stormamiga.lib"
- zuschicken soll, dann müssen Sie neben dem frankierten Briefumschlag
- auch eine Diskette (HD oder DD) mitschicken.
-
- ============================================================================
-
- Systemanforderungen:
- ~~~~~~~~~~~~~~~~~~~~
-
- - Ein Amiga
- - AmigaOS 2.0 oder höher
- - MC68EC020 oder höher
- - StormC Version 1.05 oder höher
-
- ============================================================================
-
- Installation:
- ~~~~~~~~~~~~~
-
- Starten Sie das Installationsprogramm "stormamiga.lib HD-
- Install" und führen Sie die Installation nach Ihren Wünschen
- und Anforderungen durch.
-
- Fügen Sie die "stormamiga.lib" an erster Stelle in das
- Projekt ein. Da in dieser Version der "stormamiga.lib"
- noch nicht alle Funktionen enthalten sind, müssen Sie
- noch die "storm.lib" in das Projekt einfügen.
- Wenn Sie die Spezialfunktionen der "stormamiga.lib"
- nutzen wollen, müssen Sie noch die Includedatei "storm-
- amiga.h", mit "#include <stormamiga.h>", in Ihren Quelltext
- einbinden. Die Includedatei "stormamiga.h" sollten Sie als
- letzte einbinden.
- Um auch den neuen Startupcode "stormamiga_startups.o" zu
- nutzen, müssen Sie, bei den Linker Optionen der Projekt-
- einstellungen, die Option "Eigener Startup-Code" einschal-
- ten und die Datei "stormamiga_startups.o" auswählen.
-
-
- Wichtig
-
- Der Startupcode "stormamiga_startups.o" kann nur für Ansi-C
- verwendet werden!
-
- ============================================================================
-
- Funktionen der "stormamiga.lib"
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Da die normalen Ansi-C Funktionen bereits bei StormC
- beschrieben werden, erkläre ich nur die Spezialfunktionen
- und -befehle.
-
- Hinweis
- Wenn Sie sich die Map-Datei, eines mit der "stormamiga.lib"
- gelinkten Programmes ansehen, werden Sie feststellen, daß
- einige Funktionen den Vorsatz "intern__" (z.B. intern__form_in)
- besitzen. Diese Funktionen werden in der "stormamiga.lib" nur
- intern verwendet und können nicht als Befehle benutzt werden.
-
- ============================================================================
-
- Der Startupcode "stormamiga_startups.o"
-
- Der Startupcode "stormamiga_startups.o" ist speziell für
- Ansi-C gedacht.
- Der einzige Unterschied, zum Startupcode "startup.o" des
- StormC, ist der Aufruf der Funktionen "main" und "wbmain".
-
- Der Startupcode "stormamiga_startups.o" ruft die Funtion
- "_main__", das entspricht der Funtion "main__()" in Ansi-C,
- auf. Wenn es diese Funtion in Ihrem Programm, nicht gibt,
- wird sie aus der "stormamiga.lib" dazugelinkt. Die Funktion
- "_main__" ruft die Funktion "_main", das entspricht der Funtion
- "main()" in Ansi-C, auf. Wenn es diese Funktion nicht gibt,
- meldet der Linker einen Fehler.
-
- Bei einem Start von der Workbench ruft der Startupcode
- "stormamiga_startups.o" die Funtion "_wbmain", das entspricht
- der Funtion "wbmain()" in Ansi-C, auf. Wenn es diese Funktion
- nicht gibt, wird sie aus der "stormamiga.lib" dazugelinkt.
-
-
- Die Funktion "main__()"
-
- Wenn Sie für Ihr Programm keine Auswertung von Argumenten
- benötigen, können Sie die Funktion "main()"in "main__()"
- umbenennen. Dadurch wird Ihr Programm etwas kleiner.
-
- Wichtig
-
- Da der Compiler die Funktion "main__()" nicht als normale
- main-Funktion erkennt, setzt er auch nicht den Returncode
- auf 0. Deshalb müssen Sie den Returncode, mit "return 0",
- selber auf 0 setzen.
- Die Funktion "main__()" benötigt den Startupcode "stormamiga
- _startups.o" und funktioniert nur in Ansi-C.
-
- ============================================================================
-
- SPRINTF
-
- Formatierte Ausgabe in den Stringpuffer "s".
-
- Übersicht
- #include <stormamiga.h>
-
- r = SPRINTF(s,format,...);
-
- long r;
- char *s;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in den Stringpuffer "s". Der Formatstring
- "format" beschreibt das Ausgabeformat. Danach folgen zusätzlich
- angegebene Parameter.
-
- "SPRINTF" verwendet den Befehl "RawDoFmt" der "exec.library"
- und ist dadurch auch sehr klein.
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen.
-
- ============================================================================
-
- VSPRINTF
-
- Formatierte Ausgabe in den Stringpuffer "s".
-
- Übersicht
- #include <stormamiga.h>
-
- r = VSPRINTF(s,format,vl);
-
- long r;
- char *s;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in den Stringpuffer "s". Der Formatstring
- "format" beschreibt das Ausgabeformat. Danach folgt eine
- Parameterliste "vl".
-
- "VSPRINTF" verwendet den Befehl "RawDoFmt" der "exec.library"
- und ist dadurch auch sehr klein.
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen.
-
- ============================================================================
-
- printf_
-
- Formatierte Ausgabe in die Standardausgabe "stdout".
- Funktionsreduzierte Version von "printf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = printf_(format,...);
-
- int r;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in die Standardausgabe "stdout". Der
- Ausgabeformatstring_ "format" beschreibt das Ausgabe-
- format. Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- printf__
-
- Formatierte Ausgabe in die Standardausgabe "stdout".
- Funktionsreduzierte Version von "printf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = printf__(format,...);
-
- int r;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in die Standardausgabe "stdout". Der
- Ausgabeformatstring__ "format" beschreibt das Ausgabe-
- format. Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
-
- ============================================================================
-
- fprintf_
-
- Formatierte Ausgabe in die Datei "f".
- Funktionsreduzierte Version von "fprintf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = fprintf_(f,format,...);
-
- int r;
- FILE *f;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in die Datei "f". Der Ausgabeformatstring_
- "format" beschreibt das Ausgabeformat. Danach folgen zusätzlich
- angegebene Parameter.
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- fprintf__
-
- Formatierte Ausgabe in die Datei "f".
- Funktionsreduzierte Version von "fprintf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = fprintf__(f,format,...);
-
- int r;
- FILE *f;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in die Datei "f". Der Ausgabeformatstring__
- "format" beschreibt das Ausgabeformat. Danach folgen zusätzlich
- angegebene Parameter.
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- sprintf_
-
- Formatierte Ausgabe in den Stringpuffer "s".
- Funktionsreduzierte Version von "sprintf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = sprintf_(s,format,...);
-
- int r;
- char *s;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in den Stringpuffer "s". Der
- Ausgabeformatstring_ "format" beschreibt das Ausgabe-
- format. Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- sprintf__
-
- Formatierte Ausgabe in den Stringpuffer "s".
- Funktionsreduzierte Version von "sprintf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = sprintf__(s,format,...);
-
- int r;
- char *s;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in den Stringpuffer "s". Der
- Ausgabeformatstring__ "format" beschreibt das Ausgabe-
- format. Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- vprintf_
-
- Formatierte Ausgabe in die Standardausgabe "stdout".
- Funktionsreduzierte Version von "vprintf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vprintf_(format,vl);
-
- int r;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in die Standardausgabe "stdout". Der
- Ausgabeformatstring_ "format" beschreibt das Ausgabe-
- format. Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- vprintf__
-
- Formatierte Ausgabe in die Standardausgabe "stdout".
- Funktionsreduzierte Version von "vprintf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vprintf__(format,vl);
-
- int r;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in die Standardausgabe "stdout". Der
- Ausgabeformatstring__ "format" beschreibt das Ausgabe-
- format. Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- vfprintf_
-
- Formatierte Ausgabe in die Datei "f".
- Funktionsreduzierte Version von "vfprintf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vfprintf_(f,format,vl);
-
- int r;
- FILE *f;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in die Datei "f". Der
- Ausgabeformatstring_ "format" beschreibt
- das Ausgabeformat. Danach folgt eine
- Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- vfprintf__
-
- Formatierte Ausgabe in die Datei "f".
- Funktionsreduzierte Version von "vfprintf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vfprintf__(f,format,vl);
-
- int r;
- FILE *f;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in die Datei "f". Der
- Ausgabeformatstring__ "format" beschreibt
- das Ausgabeformat. Danach folgt eine
- Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- vsprintf_
-
- Formatierte Ausgabe in den Stringpuffer "s".
- Funktionsreduzierte Version von "vsprintf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vsprintf_(s,format,vl);
-
- int r;
- char *s;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in den Stringpuffer "s". Der
- Ausgabeformatstring_ "format" beschreibt das
- Ausgabeformat. Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- vsprintf__
-
- Formatierte Ausgabe in den Stringpuffer "s".
- Funktionsreduzierte Version von "vsprintf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vsprintf__(s,format,vl);
-
- int r;
- char *s;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Formatierte Ausgabe in den Stringpuffer "s". Der
- Ausgabeformatstring__ "format" beschreibt das
- Ausgabeformat. Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der ausgegebenen Zeichen oder im Fehlerfall
- eine negative Zahl.
-
- ============================================================================
-
- scanf_
-
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Funktionsreduzierte Version von "scanf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = scanf_(format,...);
-
- int r;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Der Eingabeformatstring_ "format" beschreibt das Eingabeformat.
- Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- scanf__
-
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Funktionsreduzierte Version von "scanf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = scanf__(format,...);
-
- int r;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Der Eingabeformatstring__ "format" beschreibt das Eingabeformat.
- Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- fscanf_
-
- Einlesen einer formatierten Eingabe aus der Datei "f".
- Funktionsreduzierte Version von "fscanf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = fscanf_(f,format,...);
-
- int r;
- FILE *f;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Datei "f". Der
- Eingabeformatstring_ "format" beschreibt das Eingabeformat.
- Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- fscanf__
-
- Einlesen einer formatierten Eingabe aus der Datei "f".
- Funktionsreduzierte Version von "fscanf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = fscanf__(f,format,...);
-
- int r;
- FILE *f;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Datei "f". Der
- Eingabeformatstring__ "format" beschreibt das Eingabeformat.
- Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- sscanf_
-
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s".
- Funktionsreduzierte Version von "sscanf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = sscanf_(s,format,...);
-
- int r;
- char *s;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s". Der
- Eingabeformatstring_ "format" beschreibt das Eingabeformat.
- Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- sscanf__
-
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s".
- Funktionsreduzierte Version von "sscanf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = sscanf__(s,format,...);
-
- int r;
- char *s;
- const char *format;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s". Der
- Eingabeformatstring__ "format" beschreibt das Eingabeformat.
- Danach folgen zusätzlich angegebene Parameter.
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vscanf
-
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vscanf(format,vl);
-
- int r;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Der Eingabeformatstring "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vscanf_
-
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Funktionsreduzierte Version von "scanf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vscanf_(format,vl);
-
- int r;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Der Eingabeformatstring_ "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vscanf__
-
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Funktionsreduzierte Version von "scanf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vscanf__(format,vl);
-
- int r;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Standardeingabe "stdin".
- Der Eingabeformatstring__ "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vfscanf
-
- Einlesen einer formatierten Eingabe aus der Datei "f".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vfscanf(f,format,vl);
-
- int r;
- FILE *f;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Datei "f". Der
- Eingabeformatstring "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vfscanf_
-
- Einlesen einer formatierten Eingabe aus der Datei "f".
- Funktionsreduzierte Version von "vfscanf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vfscanf_(f,format,vl);
-
- int r;
- FILE *f;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Datei "f". Der
- Eingabeformatstring_ "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vfscanf__
-
- Einlesen einer formatierten Eingabe aus der Datei "f".
- Funktionsreduzierte Version von "vfscanf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vfscanf__(f,format,vl);
-
- int r;
- FILE *f;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus der Datei "f". Der
- Eingabeformatstring__ "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vsscanf
-
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vsscanf(s,format,vl);
-
- int r;
- char *s;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s". Der
- Eingabeformatstring "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vsscanf_
-
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s".
- Funktionsreduzierte Version von "vsscanf".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vsscanf_(s,format,vl);
-
- int r;
- char *s;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s". Der
- Eingabeformatstring_ "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- vsscanf__
-
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s".
- Funktionsreduzierte Version von "vsscanf_".
-
- Übersicht
- #include <stormamiga.h>
-
- r = vsscanf__(s,format,vl);
-
- int r;
- char *s;
- const char *format;
- va_list vl;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Einlesen einer formatierten Eingabe aus dem Stringpuffer "s". Der
- Eingabeformatstring__ "format" beschreibt das Eingabeformat.
- Danach folgt eine Parameterliste "vl".
-
- Rückgabe
- Die Anzahl der eingelesenen Zeichen oder im Fehlerfall einen Rück-
- gabewert der kleiner als die Anzahl der eingelesenen Zeichen ist.
-
- ============================================================================
-
- strcoll
-
- vergleichen zweier Strings unter Beachtung der aktuellen Sprache
-
- Übersicht
- #include <stormamiga.h>
-
- r = strcoll(s1,s2);
-
- int r;
- const char *s1;
- const char *s2;
-
- Standard
- ANSI C3.159-1989 ("ANSI C")
-
- Erklärung
- Vergleicht die Strings "s1" und "s2" Zeichen für Zeichen. Wenn die
- "locale.library" geöffnet ist, wird der Befehl "StrnCmp" ausgeführt.
- Wenn sie nicht geöffnet ist, wird der Befehl "strcmp" ausgeführt.
- Dabei wird die aktuelle Sprache nicht berücksichtigt.
-
- Rückgabe
- <0 wenn s1 < s2
- =0 wenn s1 = s2
- >0 wenn s1 > s2
-
- ============================================================================
-
- strxfrm
-
- transformieren eines Strings unter Beachtung der aktuellen Sprache
-
- Übersicht
- #include <stormamiga.h>
-
- r = strxfrm(dest,source,n);
-
- int r;
- char *dest;
- const char *source;
- size_t n;
-
- Standard
- ANSI C3.159-1989 ("ANSI C")
-
- Erklärung
- Transformiert (kopiert) maximal "n" Bytes vom String "source" nach
- "dest". Wenn die "locale.library" geöffnet ist, wird der Befehl
- "StrConvert" ausgeführt. Wenn sie nicht geöffnet ist, wird der
- Befehl "strncpy" ausgeführt. Dabei wird der String "source", ohne
- Berücksichtigung der aktuellen Sprache, nur kopiert .
-
- Rückgabe
- Die Länge des transformierten Strings "source" ohne Nullzeichen.
-
- ============================================================================
-
- bcmp
-
- vergleichen zweier Speicherbereiche
-
- Übersicht
- #include <stormamiga.h>
-
- r = bcmp(b1,b2,n);
-
- int r;
- const void *b1;
- const void *b2;
- size_t n;
-
- Standard
- (noch) keiner (4.2BSD)
-
- Erklärung
- Vergleicht die Speicherbereiche "b1" und "b2" Byte für Byte auf
- maximal "n" Bytes Länge. Die Speicherbereiche dürfen sich über-
- schneiden.
-
- Rückgabe
- Wenn beide Byte-Strings gleich sind, ist der Rückgabewert 0, sonst
- ist er ungleich 0.
-
- ============================================================================
-
- bcopy
-
- Speicher kopieren
-
- Übersicht
- #include <stormamiga.h>
-
- r = bcopy(source,dest,n);
-
- void r;
- const void *source;
- void *dest;
- size_t n;
-
- Standard
- (noch) keiner (4.2BSD)
-
- Erklärung
- Kopiert "n" Bytes vom Speicherbereich "source" nach "dest". Die
- Speicherbereiche dürfen sich überschneiden. Wenn "n" 0 ist, wird
- nichts kopiert.
-
- Rückgabe
-
-
- ============================================================================
-
- bzero
-
- schreibt NULL-Bytes in einen Speicherbereich
-
- Übersicht
- #include <stormamiga.h>
-
- r = bzero(b,n);
-
- void r;
- void b;
- size_t n;
-
- Standard
- (noch) keiner (4.3BSD)
-
- Erklärung
- Schreibt "n" NULL-Bytes in den Speicherbereich "b".
-
- Rückgabe
-
-
- ============================================================================
-
- ffs
-
- Findet das erste gesetzte Bit in einem Bit-String
-
- Übersicht
- #include <stormamiga.h>
-
- r = ffs(value);
-
- int r;
- int value;
-
- Standard
- (noch) keiner (4.3BSD)
-
- Erklärung
- Findet das erste gesetzte Bit in dem Bit-String "value" und gibt
- den Index davon zurück.
-
- Rückgabe
- Index des Bit-String "value"
-
- ============================================================================
-
- index
-
- Sucht das erste Vorkommen eines Zeichens in einem String
-
- Übersicht
- #include <stormamiga.h>
-
- r = index(s,c);
-
- char *r;
- const char *s;
- int c;
-
- Standard
- (noch) keiner (Version 6 AT&T UNIX)
-
- Erklärung
- Sucht das erste Vorkommen des Zeichens "c" in dem String "s"
- und gibt einen Zeiger auf das erste gefundene Zeichen "c"
- zurück. Wenn das Zeichen "c" nicht gefunden wird, wird 0
- zurückgegeben.
-
- Rückgabe
- Ein Zeiger auf das erste gefundene Zeichen "c" oder 0.
-
- ============================================================================
-
- rindex
-
- Sucht das letzte Vorkommen eines Zeichens in einem String
-
- Übersicht
- #include <stormamiga.h>
-
- r = rindex(s,c);
-
- char *r;
- const char *s;
- int c;
-
- Standard
- (noch) keiner (Version 6 AT&T UNIX)
-
- Erklärung
- Sucht das letzte Vorkommen des Zeichens "c" in dem String "s"
- und gibt einen Zeiger auf das letzte gefundene Zeichen "c"
- zurück. Wenn das Zeichen "c" nicht gefunden wird, wird 0
- zurückgegeben.
-
- Rückgabe
- Ein Zeiger auf das letzte gefundene Zeichen "c" oder 0.
-
- ============================================================================
-
- memccpy
-
- Speicher kopieren
-
- Übersicht
- #include <stormamiga.h>
-
- r = memccpy(dest,source,c,n);
-
- void *r;
- void *dest;
- const void *source;
- int c;
- size_t n;
-
- Standard
- (noch) keiner (4.3BSD)
-
- Erklärung
- Die Funktion kopiert den Speicherbereich "source" in den Speicher-
- bereich "dest". Wenn das Zeichen "c" im Speicherbereich "source"
- vorkommt, wird der Kopiervorgang an dieser Stelle gestoppt und ein
- Zeiger auf das Byte hinter der Kopie des Zeichens "c" im Speicher-
- bereich "dest" zurückgegeben. Ansonsten werden "n" Bytes kopiert
- und 0 zurückgegeben.
-
- Rückgabe
- Ein Zeiger auf das Byte hinter der Kopie des Zeichens "c" im
- Speicherbereich "dest" oder 0.
-
- ============================================================================
-
- strsep
-
- trennt Strings
-
- Übersicht
- #include <stormamiga.h>
-
- r = strsep(s1,s2);
-
- char *r;
- char **s1;
- char *s2;
-
- Standard
- (noch) keiner
-
- Erklärung
- Die Funktion findet im String "*s1" (mit abschließendem Nullzeichen)
- das erste Vorkommen eines Zeichens aus dem String "s2", ersetzt dieses
- durch ein Nullzeichen und verzeichnet die Stelle des nächsten Zeichens
- im String "*s1". Es wird der Originalwert des Strings "*s1" zurückgege-
- ben. Wenn kein Zeichens aus dem String "s2" gefunden wird, wird 0 zurück-
- gegeben.
-
- Rückgabe
- Der Originalwert des Strings "*s1" oder 0.
-
- ============================================================================
-
- swab
-
- vertauschen angrenzender Bytes
-
- Übersicht
- #include <stormamiga.h>
-
- r = swab(source,dest,n);
-
- void r;
- const void *source;
- void *dest;
- size_t n;
-
- Standard
- (noch) keiner (Version 7 AT&T UNIX)
-
- Erklärung
- Kopiert "n" Bytes von "source" nach "dest" und vertauscht die
- angrenzenden Bytes. "n" muß eine gerade Zahl sein.
-
- Rückgabe
-
-
- ============================================================================
-
- muls
-
- signed 32 Bit mal 32 Bit Multiplikation mit 32 Bit Ergebnis
-
- Übersicht
- #include <stormamiga.h>
-
- r = muls(arg1,arg2);
-
- LONG r;
- LONG arg1;
- LONG arg2;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Der Befehl "muls" multipliziert "arg1" mit "arg2" und ermittelt
- das Ergebnis "r".
- Der Befehl "muls" ist ein sehr schneller und sehr kleiner (6 Byte)
- Ersatz für den Befehl "SMult32" der "utility.library". Da die Funk-
- tion und der Aufruf beider Befehle identisch ist, kann "SMult32"
- einfach durch "muls" ersetzt werden.
-
- Rückgabe
- signed 32 Bit Ergebnis "r"
-
- ============================================================================
-
- mulu
-
- unsigned 32 Bit mal 32 Bit Multiplikation mit 32 Bit Ergebnis
-
- Übersicht
- #include <stormamiga.h>
-
- r = mulu(arg1,arg2);
-
- ULONG r;
- ULONG arg1;
- ULONG arg2;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Der Befehl "mulu" multipliziert "arg1" mit "arg2" und ermittelt
- das Ergebnis "r".
- Der Befehl "mulu" ist ein sehr schneller und sehr kleiner (6 Byte)
- Ersatz für den Befehl "UMult32" der "utility.library". Da die Funk-
- tion und der Aufruf beider Befehle identisch ist, kann "UMult32"
- einfach durch "mulu" ersetzt werden.
-
- Rückgabe
- unsigned 32 Bit Ergebnis "r"
-
- ============================================================================
-
- divsl
-
- signed 32 Bit durch 32 Bit Division mit 32 Bit Quotient und Rest
-
- Übersicht
- #include <stormamiga.h>
-
- quotient:remainder = divsl(dividend,divisor);
-
- LONG quotient;
- LONG remainder
- LONG dividend;
- LONG divisor;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Der Befehl "divsl" teilt den Dividenden "dividend" durch den
- Divisor "divisor" und ermittelt den Quotient "quotient" und den
- Rest "remainder".
- Der Befehl "divsl" ist ein sehr schneller und sehr kleiner
- (6 Byte) Ersatz für den Befehl "SDivMod32" der "utility.library".
- Da die Funktion und der Aufruf beider Befehle identisch ist, kann
- "SDivMod32" einfach durch "divsl" ersetzt werden.
-
- Rückgabe
- signed 32 Bit Quotient "quotient"
- signed 32 Bit Rest "remainder"
-
- ============================================================================
-
- divul
-
- unsigned 32 Bit durch 32 Bit Division mit 32 Bit Quotient und Rest
-
- Übersicht
- #include <stormamiga.h>
-
- quotient:remainder = divul(dividend,divisor);
-
- ULONG quotient;
- ULONG remainder
- ULONG dividend;
- ULONG divisor;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Der Befehl "divul" teilt den Dividenden "dividend" durch den
- Divisor "divisor" und ermittelt den Quotient "quotient" und den
- Rest "remainder".
- Der Befehl "divul" ist ein sehr schneller und sehr kleiner
- (6 Byte) Ersatz für den Befehl "UDivMod32" der "utility.library".
- Da die Funktion und der Aufruf beider Befehle identisch ist, kann
- "UDivMod32" einfach durch "divul" ersetzt werden.
-
- Rückgabe
- unsigned 32 Bit Quotient "quotient"
- unsigned 32 Bit Rest "remainder"
-
- ============================================================================
-
- muls64
-
- signed 32 Bit mal 32 Bit Multiplikation mit 64 Bit Ergebnis
-
- Übersicht
- #include <stormamiga.h>
-
- r = muls64(arg1,arg2);
-
- LONG r;
- LONG arg1;
- LONG arg2;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Der Befehl "muls64" multipliziert "arg1" mit "arg2" und ermittelt
- das Ergebnis "r".
- Der Befehl "muls64" ist ein sehr schneller und sehr kleiner (6 Byte)
- Ersatz für den Befehl "SMult64" der "utility.library". Da die Funk-
- tion und der Aufruf beider Befehle identisch ist, kann "SMult64"
- einfach durch "muls64" ersetzt werden.
- Im Gegensatz zu "SMult64", benötigt "muls64" nicht AmigaOS 3.x,
- sondern ist bereits ab AmigaOS 2.x lauffähig.
-
- Rückgabe
- signed 64 Bit Ergebnis "r"
-
- ============================================================================
-
- mulu64
-
- unsigned 32 Bit mal 32 Bit Multiplikation mit 64 Bit Ergebnis
-
- Übersicht
- #include <stormamiga.h>
-
- r = mulu64(arg1,arg2);
-
- ULONG r;
- ULONG arg1;
- ULONG arg2;
-
- Standard
- (noch) keiner (Eigenentwicklung)
-
- Erklärung
- Der Befehl "mulu64" multipliziert "arg1" mit "arg2" und ermittelt
- das Ergebnis "r".
- Der Befehl "mulu64" ist ein sehr schneller und sehr kleiner (6 Byte)
- Ersatz für den Befehl "UMult64" der "utility.library". Da die Funk-
- tion und der Aufruf beider Befehle identisch ist, kann "UMult64"
- einfach durch "mulu64" ersetzt werden.
- Im Gegensatz zu "UMult64", benötigt "mulu64" nicht AmigaOS 3.x,
- sondern ist bereits ab AmigaOS 2.x lauffähig.
-
- Rückgabe
- unsigned 64 Bit Ergebnis "r"
-
- ============================================================================
-
- Der Stringpuffer "s"
-
- Der Stringpuffer "s" muß mindestens so groß sein, daß die
- Ausgabe mit abschließenden Nullzeichen hineinpaßt.
- Die Funktion kann nicht feststellen ob der Stringpuffer groß
- genug ist.
-
- ============================================================================
-
- Die Parameterliste "vl"
-
- Die Parameterliste "vl" muß vor dem Aufruf mit va_start initia-
- lisiert werden und nach dem Aufruf mit va_end abgeschlossen wer-
- den.
-
- ============================================================================
-
- Der Ausgabeformatstring_ "format" zur formatierten Ausgabe
-
- Der Formatstring "format" zur formatierten Ausgabe besteht aus
- Formatkommandos und Ausgabezeichen. Die Formatkommandos bestimmen
- den Typ der Parameter der Ausgabefunktion und die Art der Konver-
- tierung und Ausgabe. Alle Zeichen, die kein Formatkommando sind,
- also nicht mit dem Zeichen "%" beginnen sind Ausgabezeichen und
- werden unverändert ausgegeben.
-
- Der Aufbau eines Formatkommandos:
-
- % [flags] [width [.limit] ] [size] type
-
- Die Angaben in den eckigen Klammern können optional angegeben werden.
-
- flags
- "-" zur Linksjustierung;
- "+" zur Ausgabe auch eines positiven Vorzeichens bei Zahlen;
- "0" zur Ausgabe führender Nullen bei Zahlen;
- "#" zur Ausgabe von "0x" bei hexadezimalen Zahlen und "0" bei
- oktalen Zahlen
-
- width
- Feldbreite als dezimale Ziffernfolge oder "*", in diesem Fall wird
- die Feldbreite als nächstes Argument des Typs int übergeben. Die
- Feldbreite ist immer ein minimaler Wert, zu lange Ausgaben werden
- nicht beschnitten.
-
- limit
- Die Genauigkeit als dezimale Ziffernfolge oder "*", in diesem Fall
- wird die Genauigkeit als nächstes Argument des Typs int übergeben.
- Der Wert beschreibt die maximale Anzahl von Zeichen bei Ausgabe
- einer Zeichenkette oder die minimale Anzahl von Ziffern einer ganz-
- zahligen Ausgabe.
-
- size
- Längenangabe des Arguments:
- "h" für ein Argument des Typs short int oder unsigned short int;
- "l" für ein Argument des Typs long int oder unsigned long int;
-
- type
- Typangabe des Arguments:
-
- "d"
- "i" zur Ausgabe einer vorzeichenbehafteten Dezimalzahl, das zuge-
- hörige Argument ist vom Typ int
-
- "o" zur Ausgabe einer vorzeichenlosen Oktalzahl, das zugehörige
- Argument ist vom Typ int oder unsigned int
-
- "x" zur Ausgabe einer vorzeichenlosen Hexadezimalzahl mit Kleinbuch-
- staben, das zugehörige Argument ist vom Typ int oder unsigned int
-
- "X" zur Ausgabe einer vorzeichenlosen Hexadezimalzahl mit Großbuch-
- staben, das zugehörige Argument ist vom Typ int oder unsigned int
-
- "u" zur Ausgabe einer vorzeichenlosen Dezimalzahl, das zugehörige
- Argument ist vom Typ unsigned int
-
- "c" zur Ausgabe eines Zeichens, das zugehörige Argument ist vom Typ
- int und wird in unsigned char konvertiert
-
- "s" zur Ausgabe einer Zeichenkette, die mit einem Nullzeichen abge-
- schlossen ist, das zugehörige Argument ist vom Typ char *
-
- "p" zur Ausgabe einer hexadezimalen Speicheradresse, das zugehörige
- Argument ist vom Typ void *;
-
- "n" zur Speicherung der Anzahl der bisher von diesem Funktionsaufruf
- ausgegebenen Zeichen in der Variablen, auf die das Argument vom
- Typ int * zeigt, es erfolgt keine Ausgabe
-
- "%" zur Ausgabe eines Prozentzeichens
-
- Alle anderen Typangaben führen zu undefinierten Ausgaben.
-
- ============================================================================
-
- Der Ausgabeformatstring__ "format" zur formatierten Ausgabe
-
- Der Formatstring "format" zur formatierten Ausgabe besteht aus
- Formatkommandos und Ausgabezeichen. Die Formatkommandos bestimmen
- den Typ der Parameter der Ausgabefunktion und die Art der Konver-
- tierung und Ausgabe. Alle Zeichen, die kein Formatkommando sind,
- also nicht mit dem Zeichen "%" beginnen sind Ausgabezeichen und
- werden unverändert ausgegeben.
-
- Der Aufbau eines Formatkommandos:
-
- % [flags] [width [.limit] ] [size] type
-
- Die Angaben in den eckigen Klammern können optional angegeben werden.
-
- flags
- "-" zur Linksjustierung;
- "+" zur Ausgabe auch eines positiven Vorzeichens bei Zahlen;
- "0" zur Ausgabe führender Nullen bei Zahlen;
- "#" hat keine Auswirkung
-
- width
- Feldbreite als dezimale Ziffernfolge oder "*", in diesem Fall wird
- die Feldbreite als nächstes Argument des Typs int übergeben. Die
- Feldbreite ist immer ein minimaler Wert, zu lange Ausgaben werden
- nicht beschnitten.
-
- limit
- Die Genauigkeit als dezimale Ziffernfolge oder "*", in diesem Fall
- wird die Genauigkeit als nächstes Argument des Typs int übergeben.
- Der Wert beschreibt die maximale Anzahl von Zeichen bei Ausgabe
- einer Zeichenkette oder die minimale Anzahl von Ziffern einer ganz-
- zahligen Ausgabe.
-
- size
- Längenangabe des Arguments:
- "h" für ein Argument des Typs short int oder unsigned short int;
- "l" für ein Argument des Typs long int oder unsigned long int;
-
- type
- Typangabe des Arguments:
-
- "d"
- "i" zur Ausgabe einer vorzeichenbehafteten Dezimalzahl, das zuge-
- hörige Argument ist vom Typ int
-
- "c" zur Ausgabe eines Zeichens, das zugehörige Argument ist vom
- Typ int und wird in unsigned char konvertiert
-
- "s" zur Ausgabe einer Zeichenkette, die mit einem Nullzeichen abge-
- schlossen ist, das zugehörige Argument ist vom Typ char *
-
- "n" zur Speicherung der Anzahl der bisher von diesem Funktionsaufruf
- ausgegebenen Zeichen in der Variablen, auf die das Argument vom
- Typ int * zeigt, es erfolgt keine Ausgabe
-
- "%" zur Ausgabe eines Prozentzeichens
-
- Alle anderen Typangaben führen zu undefinierten Ausgaben.
-
- ============================================================================
-
- Der Eingabeformatstring "format" zur formatierten Eingabe
-
- Der Formatstring "format" zur formatierten Eingabe besteht aus den
- Formatkommandos und Eingabezeichen. Die Formatkommandos bestimmen
- den Typ der Parameter der Eingabefunktion und die Art der Konver-
- tierung und Eingabe. Alle Zeichen, die kein Formatkommando sind,
- also nicht mit dem Zeichen "%" beginnen und keine Trennzeichen (Leer-
- zeichen, Tabulatoren und Zeilenvorschübe) sind, sind Eingabezeichen
- und werden unverändert in der Eingabe erwartet.
-
- Der Aufbau eines Formatkommandos:
-
- % [width] [size] type
-
- Die Angaben in den eckigen Klammern können optional angegeben werden.
-
- width
- Die Anzahl der zu lesenden Zeichen als dezimale Ziffernfolge oder "*",
- in diesem Fall werden die Zeichen zwar gelesen, aber nicht in das
- nächste Argument übertragen.
-
- size
- Längenangabe des Arguments:
- "h" für ein Argument des Typs short int oder unsigned short int
- "l" für ein Argument des Typs long int oder unsigned long int
-
- type
- Typangabe des Arguments:
-
- "d" zur Eingabe einer vorzeichenbehafteten dezimalen Ganzzahl, das zuge-
- hörige Argument ist vom Typ int *
-
- "i" zur Eingabe einer vorzeichenbehafteten Dezimalzahl, Oktalzahl (bei
- führender '0') oder Hexadezimalzahl (bei führendem '0x' oder '0X'),
- das zugehörige Argument ist vom Typ int *
-
- "o" zur Eingabe einer Oktalzahl, das zugehörige Argument ist vom Typ int *
-
- "x" zur Eingabe einer Hexadezimalzahl mit oder ohne '0x', das zugehörige
- Argument ist vom Typ int oder unsigned int
-
- "c" zur Eingabe von "width" Zeichen, wobei Leerzeichen und Zeilentrenner
- nicht überlesen werden und kein Nullzeichen angehängt wird, das zuge-
- hörige Argument ist vom Typ char *
-
- "s" zur Eingabe einer Zeichenkette, wobei führende Leerzeichen und Zeilen-
- trenner überlesen werden und ein Nullzeichen angehängt wird, das zuge-
- hörigen Argument ist vom Typ char *
-
- "e"
- "f"
- "g" zur Eingabe einer Fließkommazahl in beliebiger Darstellung, das zuge-
- hörige Argument ist vom Typ float *
-
- "p" zur Eingabe einer hexadezimalen Speicheradresse, das zugehörige Argument
- ist vom Typ int *
-
- "n" zur Speicherung der Anzahl der bisher von diesem Funktionsaufruf gele-
- senen Zeichen in der Variablen, auf die das Argument vom Typ int * zeigt,
- es wird kein Zeichen gelesen.
-
- "[...]" zur Eingabe einer Zeichenkette, die nur aus den in den eckigen
- Klammern angegebenen Zeichen besteht, wobei ein Nullzeichen ange-
- hängt wird, das zugehörigen Argument ist vom Typ char *
-
- "[^...]" zur Eingabe einer Zeichenkette, die nur aus Zeichen besteht, die
- nicht in den eckigen Klammern angegebenen sind, wobei ein Null-
- zeichen angehängt wird; das zugehörigen Argument ist vom Typ char *
-
- "%%" zur Eingabe eines Prozentzeichens
-
- Alle anderen Typangaben führen zu undefinierten Eingaben.
-
- ============================================================================
-
- Der Eingabeformatstring_ "format" zur formatierten Eingabe
-
- Der Formatstring "format" zur formatierten Eingabe besteht aus den
- Formatkommandos und Eingabezeichen. Die Formatkommandos bestimmen
- den Typ der Parameter der Eingabefunktion und die Art der Konver-
- tierung und Eingabe. Alle Zeichen, die kein Formatkommando sind,
- also nicht mit dem Zeichen "%" beginnen und keine Trennzeichen (Leer-
- zeichen, Tabulatoren und Zeilenvorschübe) sind, sind Eingabezeichen
- und werden unverändert in der Eingabe erwartet.
-
- Der Aufbau eines Formatkommandos:
-
- % [width] [size] type
-
- Die Angaben in den eckigen Klammern können optional angegeben werden.
-
- width
- Die Anzahl der zu lesenden Zeichen als dezimale Ziffernfolge oder "*",
- in diesem Fall werden die Zeichen zwar gelesen, aber nicht in das
- nächste Argument übertragen.
-
- size
- Längenangabe des Arguments:
- "h" für ein Argument des Typs short int oder unsigned short int
- "l" für ein Argument des Typs long int oder unsigned long int
-
- type
- Typangabe des Arguments:
-
- "d" zur Eingabe einer vorzeichenbehafteten dezimalen Ganzzahl, das zuge-
- hörige Argument ist vom Typ int *
-
- "i" zur Eingabe einer vorzeichenbehafteten Dezimalzahl, Oktalzahl (bei
- führender '0') oder Hexadezimalzahl (bei führendem '0x' oder '0X'),
- das zugehörige Argument ist vom Typ int *
-
- "o" zur Eingabe einer Oktalzahl, das zugehörige Argument ist vom Typ int *
-
- "x" zur Eingabe einer Hexadezimalzahl mit oder ohne '0x', das zugehörige
- Argument ist vom Typ int oder unsigned int
-
- "c" zur Eingabe von "width" Zeichen, wobei Leerzeichen und Zeilentrenner
- nicht überlesen werden und kein Nullzeichen angehängt wird, das zuge-
- hörige Argument ist vom Typ char *
-
- "s" zur Eingabe einer Zeichenkette, wobei führende Leerzeichen und Zeilen-
- trenner überlesen werden und ein Nullzeichen angehängt wird, das zuge-
- hörigen Argument ist vom Typ char *
-
- "p" zur Eingabe einer hexadezimalen Speicheradresse, das zugehörige Argument
- ist vom Typ int *
-
- "n" zur Speicherung der Anzahl der bisher von diesem Funktionsaufruf gele-
- senen Zeichen in der Variablen, auf die das Argument vom Typ int * zeigt,
- es wird kein Zeichen gelesen.
-
- "[...]" zur Eingabe einer Zeichenkette, die nur aus den in den eckigen
- Klammern angegebenen Zeichen besteht, wobei ein Nullzeichen ange-
- hängt wird, das zugehörigen Argument ist vom Typ char *
-
- "[^...]" zur Eingabe einer Zeichenkette, die nur aus Zeichen besteht, die
- nicht in den eckigen Klammern angegebenen sind, wobei ein Null-
- zeichen angehängt wird; das zugehörigen Argument ist vom Typ char *
-
- "%%" zur Eingabe eines Prozentzeichens
-
- Alle anderen Typangaben führen zu undefinierten Eingaben.
-
- ============================================================================
-
- Der Eingabeformatstring__ "format" zur formatierten Eingabe
-
- Der Formatstring "format" zur formatierten Eingabe besteht aus den
- Formatkommandos und Eingabezeichen. Die Formatkommandos bestimmen
- den Typ der Parameter der Eingabefunktion und die Art der Konver-
- tierung und Eingabe. Alle Zeichen, die kein Formatkommando sind,
- also nicht mit dem Zeichen "%" beginnen und keine Trennzeichen (Leer-
- zeichen, Tabulatoren und Zeilenvorschübe) sind, sind Eingabezeichen
- und werden unverändert in der Eingabe erwartet.
-
- Der Aufbau eines Formatkommandos:
-
- % [width] [size] type
-
- Die Angaben in den eckigen Klammern können optional angegeben werden.
-
- width
- Die Anzahl der zu lesenden Zeichen als dezimale Ziffernfolge oder "*",
- in diesem Fall werden die Zeichen zwar gelesen, aber nicht in das
- nächste Argument übertragen.
-
- size
- Längenangabe des Arguments:
- "h" für ein Argument des Typs short int oder unsigned short int
- "l" für ein Argument des Typs long int oder unsigned long int
-
- type
- Typangabe des Arguments:
-
- "d" zur Eingabe einer vorzeichenbehafteten dezimalen Ganzzahl, das zuge-
- hörige Argument ist vom Typ int *
-
- "i" zur Eingabe einer vorzeichenbehafteten Dezimalzahl, Oktalzahl (bei
- führender '0') oder Hexadezimalzahl (bei führendem '0x' oder '0X'),
- das zugehörige Argument ist vom Typ int *
-
- "c" zur Eingabe von "width" Zeichen, wobei Leerzeichen und Zeilentrenner
- nicht überlesen werden und kein Nullzeichen angehängt wird, das zuge-
- hörige Argument ist vom Typ char *
-
- "s" zur Eingabe einer Zeichenkette, wobei führende Leerzeichen und Zeilen-
- trenner überlesen werden und ein Nullzeichen angehängt wird, das zuge-
- hörigen Argument ist vom Typ char *
-
- "n" zur Speicherung der Anzahl der bisher von diesem Funktionsaufruf gele-
- senen Zeichen in der Variablen, auf die das Argument vom Typ int * zeigt,
- es wird kein Zeichen gelesen.
-
- "[...]" zur Eingabe einer Zeichenkette, die nur aus den in den eckigen
- Klammern angegebenen Zeichen besteht, wobei ein Nullzeichen ange-
- hängt wird, das zugehörigen Argument ist vom Typ char *
-
- "[^...]" zur Eingabe einer Zeichenkette, die nur aus Zeichen besteht, die
- nicht in den eckigen Klammern angegebenen sind, wobei ein Null-
- zeichen angehängt wird; das zugehörigen Argument ist vom Typ char *
-
- "%%" zur Eingabe eines Prozentzeichens
-
- Alle anderen Typangaben führen zu undefinierten Eingaben.
-
- ============================================================================
-
- Beispiele:
- ~~~~~~~~~~
-
- Um die Vorteile und Anwendungsmöglichkeiten der "stormamiga.lib"
- etwas zu verdeutlichen, habe ich ein paar Beispiele beigelegt.
-
- Die Beispiele mit dem Namen "...-storm" werden mit der "storm.lib"
- und dem Startupcode "startup.o" gelinkt.
-
- Die Beispiele mit dem Namen "...-stormamiga" werden mit der
- "stormamiga.lib" und dem Startupcode "stormamiga_startups.o" gelinkt.
-
- Die Beispiele mit dem Namen "...-stormamiga-2" werden mit der
- "stormamiga.lib" und dem Startupcode "stormamiga_startups.o" gelinkt.
- Außerdem wurde der Quelltext für die "stormamiga.lib" optimiert.
-
- ============================================================================
-
- Bekannte Fehler:
- ~~~~~~~~~~~~~~~~
-
- - Der Befehl "printf" hat bei der Ausgabe von Fließkommazahlen einen
- Rundungsfehler.
-
- ============================================================================
-
- Updates:
- ~~~~~~~~
-
- Wenn Sie Zugang zum Internet haben, dann können Sie die Updates auf
- der HomePage "http://home.pages.de/~haage" der Haage & Partner
- Computer GmbH bekommen.
- Sie können die neueste Version natürlich auch direkt von mir bekommen.
- Allerdings müssen Sie mir dann einen frankierten Briefumschlag und
- eine Diskette (HD oder DD) zuschicken.
-
- ============================================================================
-
- Kopierrecht:
- ~~~~~~~~~~~~
-
- Die "stormamiga.lib" ist FREEWARE. Sie darf frei kopiert werden, solange
- sie in KEINSTER Weise verändert wird und solange ALLE dazugehörigen
- Dateien UNVERÄNDERT mitkopiert werden.
-
- Die "stormamiga.lib" darf auch im Zusammenhang mit anderen Programmen
- verwendet und vertrieben werden, solange KLARGESTELLT ist, daß es sich um
- FREEWARE handelt UND solange ALLE Dateien UNVERÄNDERT mitkopiert werden.
- Mit der Weitergabe der "stormamiga.lib" darf kein Gewinn erzielt werden.
- Der Verkaufspreis einer Diskette, die die "stormamiga.lib" enthält, darf
- nicht mehr als 5,- DM betragen. Ausgenommen davon sind Disketten, die es
- zu Zeitschriften gibt.
-
- Eine Reassemblierung der "stormamiga.lib" ist selbstverständlich NICHT
- gestattet.
-
- AM WICHTIGSTEN:
-
-
- Die Benutzung der "stormamiga.lib" erfolgt AUSSCHLIEßLICH auf eigenes Risiko.
-
- Der Autor kann auf KEINEN FALL für einen Schaden oder Datenverlust der direkt
- oder indirekt mit dem Gebrauch der "stormamiga.lib" entstehen sollte verant-
- wortlich gemacht werden.
-
- Alle Rechte vorbehalten. Für Fehlermitteilungen oder Verbesserungsvorschläge
- bin ich jederzeit dankbar.
-
- ============================================================================
-
- Geschichte:
- ~~~~~~~~~~~
-
- V41.000 alpha - V41.002 alpha (18.03. - 21.03.1996):
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- interne Entwicklungsphase
-
- - Funktionen der "amiga.lib" für MC68000 oder höher geschrieben
-
-
- V41.003 alpha - V41.021 alpha (22.03. - 16.05.1996):
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- interne Entwicklungsphase
-
- - Funktionen der "amiga.lib" für MC68EC020 oder höher umgeschrieben (ab
- V41.003 alpha wird ein MC68EC020 oder höher benötigt)
- - Ein- und Ausgaberoutinen geschrieben (GCC-kompatibel)
- - Funktionen zum automatischen Öffnen und Schließen der Libraries ge-
- schrieben
- - die meisten ctype-Funktionen geschrieben
- - einige stdio-, string- und stdlib-Funktionen geschrieben
- - Startupcode für die "stormamiga.lib" optimiert
- - einige andere Funktionen geschrieben
- - einige Optimierungen und Fehlerkorrekturen
- - Includedatei "stormamiga.h" geschrieben
-
-
- V41.022 alpha - V41.029 alpha (20.05. - 11.06.1996):
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- interne Entwicklungsphase
-
- - Ein- und Ausgaberoutinen komplett neu geschrieben (StormC-kompatibel)
- - einige stdio-Funktionen geschrieben
- - 64Bit Befehle der "storm.lib" für MC68EC020+ optimiert
- - einige andere Funktionen geschrieben
- - einige Optimierungen und Fehlerkorrekturen
- - Includedatei "stormamiga.h" erweitert
- - Anleitung geschrieben
-
-
- Hinweis:
-
- Durch ein Versehen wurde die Version 41.028 alpha, einige uralte Beispiel-
- programme und Teile der Anleitung, mit der Version 1.1 von StormC, veröffent-
- licht. Diese Version hatt aber noch einige größere Fehler und funktioniert
- nicht mit den alten Beispielprogrammen.
- Die erste, zur Veröffentlichung gedachte Version, ist die Version 41.032 beta.
-
-
- V41.030 beta - V41.031 beta (13.06. - 15.06.1996):
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- interne Entwicklungs- und Testphase
-
- - Optimierung der Ein- und Ausgaberoutinen
- - Fehlerkorrekturen
- - Anleitung überarbeitet
-
-
- V41.032 beta (16.06.1996):
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- Erste öffentliche Version
-
-
- V41.033 beta (17.06. - 15.07.1996):
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- - umfangreiches Betatesting
- - Fehlerkorrektur der string-Funktion "memcpy" (Die Benutzung von "memcpy"
- führte zu einem Fehler oder zum Systemabsturz. Die Ursache war ein Tipp-
- fehler. Ich hatte "a2" statt "a1" geschrieben.)
- - die mathematischen Funktionen "acos", "asin", "atan", "ceil", "cos",
- "cosh", "exp", "fabs", "floor", "log", "log10", "pow", "sin", "sinh",
- "sqrt", "tan" und "tanh" geschrieben
- - die string-Funktionen "memccpy", "strcoll", "strlwr", "strsep", "strupr",
- "strxfrm" und "swab" geschrieben
- - die stdlib-Funktionen "abs", "labs", "atoi", "atol" geschrieben
- - die stdlib-Funktion "rand" optimiert
- - die string-Funktionen "memchr", "memmove", "memset", "strcspn", "strpbrk",
- "strspn" und "strtok" optimiert
- - Includedatei "stormamiga.h" überarbeitet und erweitert
-
-
- V41.034 (16.07. - 31.07.1996):
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- - Fehlerkorrektur der internen Funktion "amigawrite" (Der auszugebende Text wurde
- erst nach einigen Sekunden angezeigt. Bei dem Programm "GadTools" wurde der Text
- erst ausgegeben, wenn 5 Schalter gedrückt wurden.)
- - die string-Funktionen "strerror" und "stricmp" geschrieben
- - die string-Funktionen "memcmp", "strcat", "strcmp", "strcpy", "strncat",
- "strncmp", "strncpy" und "strstr" optimiert
- - die stdlib-Funktionen "malloc" und "free" optimiert
- - die stdio-Funktionen "vfprintf", "vfprintf_", "vfprintf__", "vfscanf",
- "vfscanf_", "vfscanf__", "fflush" und "setvbuf" optimiert
- - die internen Funktionen "amigaread", "amigareadunget", "amigawrite", "amiga-
- eof", "amigaseek", "amigagetc", "amigagetcunget", "amigaungetc", "amigaputc",
- "amigaflush", "amigaclose", "SMult64", "UMult64", "SDiv64", "INIT_0_InitFiles",
- "EXIT_5_InitFiles", "INIT_5_InitStdIOFiles", "EXIT_5_InitStdIOFiles" und
- "EXIT_4_free" optimiert
- - "aufräumen" der "stormamiga.lib" (dadurch wird das Linken beschleunigt,
- die Programme etwas schneller und die Map-Datei übersichtlicher)
- - Anleitung überarbeitet
-
-
- V41.035 (02.08. - 17.08.1996):
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- - die string-Funktionen "strcmp", "strcoll" und "strxfrm" neu geschrieben
- - die stdlib-Funktionen "llabs", "atoll", "strtol", "strtoll", "strtoul",
- "strtoull", "inttostr", "llongtostr", "uinttostr" und "ullongtostr"
- geschrieben
- - die stdio-Funktion "puts" geschrieben
- - die Spezial-Funktionen "muls64" und "mulu64" geschrieben
- - Includedatei "stormamiga.h" erweitert
- - Benutzer-Lexikon mit allen Sonder-Funktionen der "stormamiga.lib" geschrieben
- - Installerskript geschrieben
- - Anleitung überarbeitet (Beschreibung der Funktionen neu geschrieben, Index
- hinzugefügt und an AmigaOS 3.0 angepaßt); Anleitung als ASCII-Text beigelegt
-
- ============================================================================
-
- In Zukunft:
- ~~~~~~~~~~~
-
- Die folgenden Punkte habe ich mir für die nächsten Versionen der
- "stormamiga.lib" vorgenommen.
-
- - alle, noch fehlenden, Funtionen der "storm.lib" und der "amiga.lib"
- in die "stormamiga.lib" integrieren
-
- - Unterstützung des kleinen Datenmodelles a4 (eventuell auch a6)
-
- - spezielle Version der "stormamiga.lib" für die Koprozessoren
- MC68881 und MC68882 (mit "68040.library" bzw. "68060.library"
- auch für den MC68040 und MC68060)
-
- - spezielle Version der "stormamiga.lib" für den MC68040 (mit
- "68060.library" auch für den MC68060)
-
- ============================================================================
-
- Danksagungen:
- ~~~~~~~~~~~~~
-
- Als erstes möchte ich mich bei der Haage & Partner Computer GmbH
- bedanken, weil sie mir ihre Entwicklerunterlagen und Quelltexte
- kostenlos überlassen haben. Ohne diese Unterlagen währe ich wahr-
- scheinlich an den Ein- und Ausgaberoutinen für die Befehle printf
- und scanf verzweifelt.
- Besonderen Dank an Jochen Becher, der auch an Sonntagen zu später
- Stunde Zeit für meine Probleme hatte.
-
- Ohne die Unterstützung der Haage & Partner Computer GmbH würde
- es die "stormamiga.lib", in dieser Form, nicht geben.
-
-
- Außerdem möchte ich mich bei folgenden Leuten bedanken:
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- - Uwe Schienbein, für Betatesting, Bugreports und neue Ideen
- - Carsten Bornholz, für Betatesting
- - Dietmar Heidrich, für seinen "OMA"
- - Frank Wille, für seinen "FreePhxAss"
-
- ============================================================================
-
- Autor:
- ~~~~~~
-
- Matthias Henze
- Gorkistraße 119
- 04347 Leipzig
- Deutschland
-
- Telefon: 0341/2326414
- ============================================================================
-